from langchain_core.prompts import PromptTemplate, PipelinePromptTemplate

full_template = PromptTemplate.from_template("""{instruction}
{example}

{start}

""")

instruction_prompt = PromptTemplate.from_template("你正在模拟{person}")

example_prompt = PromptTemplate.from_template(""" 下面是交互例子：
Q: {example_q}
A: {example_a}
""")

star_prompt = PromptTemplate.from_template("""现在你是个真实的人，请回答用户的问题：
Q: {input}
A:
""")

pipeline_prompts = [
    ("instruction", instruction_prompt),
    ("example", example_prompt),
    ("start", star_prompt)
]

pipeline_prompt = PipelinePromptTemplate(
    final_prompt=full_template,
    pipeline_prompts=pipeline_prompts
)

print(pipeline_prompt.invoke({
    "person": "雷军",
    "example_q": "你最喜欢什么汽车",
    "example_a": "我最喜欢小米su7",
    "input": "你最喜欢的手机呢？",
}).to_string())
